package com.hanamaki.study.day03;

import org.checkerframework.checker.nullness.compatqual.NullableDecl;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriver.*;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.util.Set;
import java.util.concurrent.TimeUnit;

public class SeleniumWaitTime07 {

    //注册驱动
    WebDriver driver;

    @BeforeMethod
    public void setUp() {

        //注册本地火狐打开的位置
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
        //初始化
        driver = new FirefoxDriver();

        /* 在当前位置 声明 隐式等待   */
        Timeouts timeouts = driver.manage().timeouts();
        /* 设置隐式等待的 作用域 */
        timeouts.setScriptTimeout(10, TimeUnit.SECONDS);
        timeouts.pageLoadTimeout(10, TimeUnit.SECONDS);
        timeouts.implicitlyWait(10, TimeUnit.SECONDS);

    }

    @Test
    public void test() throws InterruptedException {
        driver.get("file:///C:/Users/Administrator/Desktop/testhtml/exam/index.html");

        /* 强制等待  3s  才会操作接下来的事情 */
//        Thread.sleep(3000);

        /* 显示等待 和 隐式等待  区别去强制等待的 特点为 可以节省时间 */

        /* 想要去使用 显示等待 要 通过 WebDriverWait() 对象来实现  */
        /**
         * driver :浏览器驱动
         * 10：搜索元素的超时时间 为 10s
         * 1：每隔 1s 搜索指定的元素一次 如果不写默认的 时长 为 05s
         */
        WebDriverWait webDriverWait = new WebDriverWait(driver, 10, 1);
        WebElement element = webDriverWait.until(new ExpectedCondition<WebElement>() {
            public WebElement apply(WebDriver webDriver) {
                return driver.findElement(By.linkText("继续提供房源信息"));
            }
        });
        element.click();

    }

    @Test
    public void test2() {
        driver.get("file:///C:/Users/Administrator/Desktop/testhtml/exam/index.html");

        /* 强制等待  3s  才会操作接下来的事情 */
//        Thread.sleep(3000);

        /* 显示等待 和 隐式等待  区别去强制等待的 特点为 可以节省时间 */

        /* 想要使用 隐士等待来获取元素 只需要全局声明即可 */
        driver.findElement(By.linkText("继续提供源信息")).click();



    }


    @AfterMethod
    public void close() {
//        driver.close();
    }
}
